perm filename GAME.LSP[206,JMC]1 blob sn#070524 filedate 1973-11-11 generic text, type T, neo UTF8
(SETQ VALFNS @(
VALMAX
VALMAXLIS
VALMIN
VALMINLIS
RECTIFY
COMMONTAIL
COMMONHEAD
LISTSUB
LISTSUBA
))

(DE VALMAX (P ALPHA BETA) (COND ((TER (RECTIFY P) ALPHA BETA) (CONS (MAX (CAR ALPHA)
(MIN (CAR BETA) (IMVAL (RECTIFY P) ALPHA BETA))) (CAR P)))
(T (VALMAXLIS (SUCCESSORS (RECTIFY P) ALPHA BETA) ALPHA BETA))))

(DE VALMAXLIS (U ALPHA BETA) (COND ((NULL U) ALPHA)
(T ((LAMBDA (X) (COND ((NOT (LESSP (CAR X) (CAR BETA))) BETA)
(T (VALMAXLIS (CDR U) (COND ((NOT (LESSP (CAR ALPHA) (CAR X))) ALPHA)
(T X)) BETA)))) (VALMAX (CAR U) ALPHA BETA)))))

(DE VALMIN (P ALPHA BETA) (COND ((TER (RECTIFY P) ALPHA BETA) (CONS (MAX (CAR ALPHA)
(MIN (CAR BETA) (IMVAL (RECTIFY P) ALPHA BETA))) (CAR P)))
(T (VALMINLIS (SUCCESSORS (RECTIFY P) ALPHA BETA) ALPHA BETA))))

(DE VALMINLIS (U ALPHA BETA) (COND ((NULL U) BETA)
(T ((LAMBDA (X) (COND ((NOT (GREATERP (CAR X) (CAR ALPHA))) ALPHA)
(T (VALMINLIS (CDR U) ALPHA (COND ((NOT (GREATERP (CAR BETA) (CAR X))) BETA)
(T X)))))) (VALMIN (CAR U) ALPHA BETA)))))

(DE RECTIFY (P) (PROG (Z)
(SETQ Q (COMMONTAIL P P1))
L1
(COND ((EQ P P1)(GO L2)))
(REVERT)
(SETQ P1 (CDR P1))
(GO L1)
L2
(SETQ Z (LISTSUB P P1))
L3
(COND ((NULL Z) (RETURN NIL)))
(UPDATE (CAR Z))
(SETQ Z (CDR Z))
(GO L3)
))

(DE COMMONTAIL (U V) (REVERSE (COMMONHEAD (REVERSE U) (REVERSE V))))

(DE COMMONHEAD (U V) (COND ((OR (NULL U) (NULL V) (NOT (EQUAL (CAR U)
(CAR V)))) NIL) (T (CONS (CAR U) (COMMONHEAD (CDR U) (CDR V))))))

(DE LISTSUB (U V) (LISTSUBA U V NIL))

(DE LISTSUBA (U V W) (COND ((EQUAL U V) W) (T (LISTSUBA (CDR U) V
(CONS (CAR U) W)))))